package com.cupk.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cupk.dtos.DashboardDataDto; // 【新增】
import com.cupk.dtos.TaskDto;
import com.cupk.entities.Task;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.time.LocalDate;
import java.util.List;

@Mapper
public interface TaskMapper extends BaseMapper<Task> {

    // 原有方法
    List<TaskDto> findAllWithDetails();
    List<TaskDto> findByAssigneeIdWithDetails(@Param("assigneeId") Long assigneeId);
    List<TaskDto> findByProjectIdWithDetails(@Param("projectId") Long projectId);
    TaskDto findByIdWithDetails(@Param("id") Long id);
    List<TaskDto> searchTasksWithDetails(@Param("keyword") String keyword);
    List<TaskDto> findTasksDueBeforeWithDetails(@Param("date") LocalDate date);

    // 【在这里添加以下所有新方法】
    long countInProgressForUser(@Param("userId") Long userId);

    long countInProgressForUserLastMonth(@Param("userId") Long userId);

    List<DashboardDataDto.ChartPoint> getTaskDistributionForUser(@Param("userId") Long userId);

    List<Task> findRecentActivitiesForUser(@Param("userId") Long userId, @Param("limit") int limit);

    List<DashboardDataDto.MonthlyChartPoint> getMonthlyTrendForUser(@Param("userId") Long userId, @Param("year") int year);
}